%pylab inline
import numpy as np # convert list to array
import matplotlib.pyplot as plt
http://cserti.web.elte.hu/optika.php
Három elemi 2x2-es mátrixból tetszőleges optika rendszer leképezése számolható paraxiális közelítésben.
A három elemi mátrix:
1) Szabad terjedés:
\begin{equation} {\bf M}_{\textrm{free}}= \left( \begin{array}{cc} 1 & \frac{d}{n} \\ 0 & 1 \end{array} \right). \nonumber \end{equation}
2) Törés:
\begin{equation} {\bf M}_{\textrm{törés}}= \left( \begin{array}{cc} 1 & 0 \\ \frac{n_1-n_2}{R} & 1 \end{array} \right). \nonumber \end{equation}
3) Visszaverődés gömbtükörről:
\begin{equation} {\bf M}_{\textrm{tükör}}= \left( \begin{array}{cc} 1 & 0 \\ -\frac{2n}{R} & -1 \end{array} \right). \nonumber \end{equation}
A törőfelület görbületi sugara $R$, a felület a bal és jobb oldalán $n_1$ és $n_2$ a törésmutató. Az előjel konvenciók a jegyzetben találhatók.
Feltevés: a fénysugár balról jobbra halad, ezért az $M$ mátrixok szorzása jobbról balra történik.
Különböző anyagok törésmutatója itt található: Filmetrics
def Ttores(nbe,nki,Rk):
res=(matrix([[1,0],
[(nbe - nki) / Rk, 1]]))
return(res)
def Tfree(nk,d):
res=(matrix([[1,d/nk],
[0, 1]]))
return(res)
def Ttukor(nk,Rt):
res=(matrix([[1,0],
[-2*nk/ Rt, -1]]))
return(res)
def focus(A):
f=-1/A[1,0] # a fokusztavolsag a fosiktol merve
detA=det(A)
h1=(detA-A[1,1])/A[1,0] # pozitiv, ha a lencse bal oldalatol merve balra (kint) van a bal oldali fosik
h2=(detA-A[0,0])/A[1,0] # pozitiv, ha a lencse jobb oldalatol merve jobbra (kint) van a jobb oldali fosik
# A Hecht konyveben a fosikok helye: h1, h2 which are positive when the planes
# lie to the right/left of their respective vertices.
return(f,h1,h2)
The Zeiss Tessar is a famous photographic lens, invented in 1902 by Paul Rudolph of the Carl Zeiss optical company.
Számolás részletei*: Eugene Hecht: Optics (4th Edition, 2002), lásd még: pp. 250-251, figure 6.10
A lencsék paraméterei és a köztük lévő távolságok itt: A. Nussbaum & R. A. Phillips: Modern optika mérnököknek és kutatóknak (Műszaki Könykiadó, 1982.), 39. oldal, 1-19. ábra és alatta a táblázat.
*This particular example was chosen primarily because Nussbaum's book Geometric Optics contains a simple Fortran computer program written specifically for this lens. It would be almost silly to evaluate the system matrix by hand.
ni = (1.6116, 1.6053, 1.5123, 1.6116) # a lencsek toresmutatoi
Ri = (1.628, -27.57, -3.457, 1.582, 10000000, 1.920, -2.4) # a lencsek gorbuleti sugarai
di = (0.357, 0.189, 0.081, 0.325, 0.217, 0.396) # lencsek kozti tavolsagok
T1 = Ttores(1, ni[0], Ri[0])
T2 = Tfree(ni[0], di[0])
T3 = Ttores(ni[0], 1, Ri[1])
T4 = Tfree(1, di[1])
T5 = Ttores(1, ni[1], Ri[2])
T6 = Tfree(ni[1], di[2])
T7 = Ttores(ni[1], 1, Ri[3])
T8 = Tfree(1, di[3])
T9 = Ttores(1, ni[2], Ri[4])
T10 = Tfree(ni[2], di[4])
T11 = Ttores(ni[2], ni[3], Ri[5])
T12 = Tfree(ni[3], di[5])
T13 = Ttores(ni[3], 1, Ri[6])
T = T13 * T12 * T11 * T10 * T9 * T8 * T7 * T6 * T5 *T4 * T3 *T2 * T1
print("T_total = ",T)
print("\ncheck, det(T) = ",det(T))
f,h1,h2=focus(T)
print("f = ",f)
print("h1 = ",h1)
print("h2 = ",h2)
print("A fókusztávolság az utolsó lencse szélétől mérve = ",f-abs(h2))
A. Nussbaum & R. A. Phillips: Modern optika mérnököknek és kutatóknak (Műszaki Könykiadó, 1982.), 48. oldal, a 2-4. ábra számolása paraxiális közelítésben. Az alábbi eredmény egyezik a fenti könyvbelivel.
t, R, n, t1v, k =200, 50, 1.5, 15, 45.63
alpha= arcsin(0.1)
TT=Ttores(n,1,-R)*Tfree(n,t1v)*Ttores(1,n,R)*Tfree(1,t)
TT, det(TT), focus(TT), TT[1,0]
vv=TT*matrix([[0],[alpha]])
vv
kiszog=vv[1,0]
lv= abs(vv[0,0]/vv[1,0])
vv[1,0],kiszog, sin(kiszog), lv
n1,n2 = (1,3/2)
R1=1
cent1=array([0,0]) # cent: a 1. kor kozeppontja
R2=-1
cent2=cent1 # cent: a 2. kor kozeppontja
T1 = Ttores(n1, n2, R1)
T2 = Tfree(n2, 2*R1)
T3 = Ttores(n2, n1, R2)
T = T3 *T2 * T1
print("T_total = ",T)
print("\ncheck, det(T) = ",det(T))
f,h1,h2=focus(T)
print("f = ",f)
print("h1 = ",h1)
print("h2 = ",h2)
print("A fókusztávolság az utolsó lencse szélétől mérve = ",f+h2)
n1,n2 = (1,3/2)
R1=1
cent1=array([0,0]) # cent: a 1. kor kozeppontja
R2=-1
cent2=array([-1.9*abs(R2),0]) # cent: a 2. kor kozeppontja
V1=cent1[0]-abs(R1)
V2=cent2[0]+abs(R2)
d=V2-V1
print("cent1,cent2, V1,V2, d = ",cent1,cent2, V1,V2, d)
T1 = Ttores(n1, n2, R1)
T2 = Tfree(n2, d)
T3 = Ttores(n2, n1, R2)
T = T3 *T2 * T1
print("T_total = ",T)
print("\ncheck, det(T) = ",det(T))
f,h1,h2=focus(T)
print("f = ",f)
print("h1 = ",h1)
print("h2 = ",h2)
print("A fókusztávolság az utolsó lencse szélétől mérve = ",f+h2)
n1,n2 = (1,3/2)
R1=1
cent1=array([0,0]) # cent: a 1. kor kozeppontja
R2=-1
cent2=array([-1.*abs(R2),0]) # cent: a 2. kor kozeppontja
V1=cent1[0]-abs(R1)
V2=cent2[0]+abs(R2)
d=V2-V1
print("cent1,cent2, V1,V2, d = ",cent1,cent2, V1,V2, d)
T1 = Ttores(n1, n2, R1)
T2 = Tfree(n2, d)
T3 = Ttores(n2, n1, R2)
T = T3 *T2 * T1
print("T_total = ",T)
print("\ncheck, det(T) = ",det(T))
f,h1,h2=focus(T)
print("f = ",f)
print("h1 = ",h1)
print("h2 = ",h2)
print("A fókusztávolság az utolsó lencse szélétől mérve = ",f+h2)
n1,n2 = (1,3/2)
R1=20
cent1=array([0,0]) # cent: a 1. kor kozeppontja
R2=-40
cent2=array([1-R1-abs(R2),0]) # cent: a 2. kor kozeppontja
V1=cent1[0]-abs(R1)
V2=cent2[0]+abs(R2)
d=V2-V1
print("cent1,cent2, V1,V2, d = ",cent1,cent2, V1,V2, d)
T1 = Ttores(n1, n2, R1)
T2 = Tfree(n2, d)
T3 = Ttores(n2, n1, R2)
T = T3 *T2 * T1
print("T_total = ",T)
print("\ncheck, det(T) = ",det(T))
f,h1,h2=focus(T)
print("f = ",f)
print("h1 = ",h1)
print("h2 = ",h2)
so=30+abs(h1)
si= f*so/(so-f)
print("H1 fősíktól mérve a tárgytávolság = ",so)
print("H2 fősíktól mérve a képtávolság = ",si)
f1=-30
f2=20
d=10
T1=(matrix([[1,0],
[-1/ f1, 1]]))
T2 = Tfree(1, d)
T3=(matrix([[1,0],
[-1/ f2, 1]]))
T=T3*T2*T1
print("T_total = ",T)
print("\ncheck, det(T) = ",det(T))
f,h1,h2=focus(T)
print("f = ",f)
print("h1 = ",h1)
print("h2 = ",h2)
http://store.doverpublications.com/0486680444.html
A glass rod 2.8 cm long and of index 1.6 has both ends ground to spherical surfaces of radius 2.4 cm, and convex to the air. An object 2 cm tall is located on the axis, in the air, 8 cm to the left of the left-hand vertex. (See Figure II.ll). Find the position and size of the final image.
on page 55, Problem 2.
n1,n2 = (1,1.6)
R1=2.4
cent1=array([0,0]) # cent: a 1. kor kozeppontja
R2=-R1
d=2.8
T1 = Ttores(n1, n2, R1)
T2 = Tfree(n2, d)
T3 = Ttores(n2, n1, R2)
T=T3*T2*T1
print("T_total = ",T)
print("\ncheck, det(T) = ",det(T))
print('\nMinden távolság cm-ben\n')
f,h1,h2=focus(T)
print("f = ",f)
print("h1 = ",h1)
print("h2 = ",h2)
so=8+abs(h1)
si= f*so/(so-f)
print("H1 fősíktól mérve a tárgytávolság = ",so)
print("H2 fősíktól mérve a képtávolság = ",si)
print("A rúd jobb szélétől mérve a képtávolság = ",si-abs(h2))
print("Nagyítás = ",-si/so)
print("Kép mérete (fordított állású) = ",-si/so*2)